#ifndef COLOR_H
#define COLOR_H

struct Color {
	Color(unsigned char, unsigned char, unsigned char, unsigned char = 255);
	Color(double, double, double);
	Color(void);
	Color(const Color &);
	~Color(void);

    void print() const;
    bool inGrayscale() const;

	Color &operator=(const Color &);
	unsigned char operator[](int &) const;
	Color operator+(const Color &) const;
	Color operator*(const Color &) const;
	Color operator-(const Color &) const;
	Color operator/(const Color &) const;

	unsigned char red, green, blue, alpha;
};

Color operator*(const Color &, const double);
Color operator*(const double, const Color &);
Color operator-(const double, const Color &);

#endif
